#pragma once

#include <vector>
#include "../Utilities/utilities.h"
#include "Defines.h"

class cShader;
class cModel;
class cTexture;

class cResourceManager
{
protected:
	static cResourceManager	*ms_Instance;

	std::vector<cShader*>	m_vShaders;
	std::vector<cModel*>	m_vModels;
	std::vector<cTexture*>	m_vTextures;

	cResourceManager():m_vShaders(), m_vModels(), m_vTextures() { }
	cResourceManager(const cResourceManager &) { }
	cResourceManager& operator =(const cResourceManager &) { }
	virtual ~cResourceManager();

public:
	enum {	RM_SHADER = 0, 
			RM_MODEL,
			RM_TEXTURE
	};

	static cResourceManager* GetInstance();
	static void DestroyInstance();

	void LoadResource(const char *file_url);
	void* GetResourceByID(int rmType, int rmID);
};
